/**
 * 将16进制颜色转换为RGB对象
 * @param hex
 * @returns
 */
export function hexToRgb(hex: string): { r: number, g: number, b: number } | null {
  const cleanHex = hex.replace(/^#/, '')

  // 验证格式（3位或6位十六进制字符）
  // eslint-disable-next-line regexp/no-unused-capturing-group
  const regex = /^([0-9a-f]{3}){1,2}$/i
  if (!regex.test(cleanHex)) {
    console.error('无效的16进制颜色格式')
    return null
  }

  // 处理3位简写（如 f00 → ff0000）
  let fullHex = cleanHex
  if (cleanHex.length === 3) {
    fullHex = cleanHex
      .split('')
      .map(char => char + char)
      .join('')
  }

  // 解析RGB值（16进制转10进制）
  const r = Number.parseInt(fullHex.substring(0, 2), 16)
  const g = Number.parseInt(fullHex.substring(2, 4), 16)
  const b = Number.parseInt(fullHex.substring(4, 6), 16)

  return { r, g, b }
}
